package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import DAO.ConnectionProvider;
import DAO.LernbueroDAO;
import DAO.SchuelerDAO;

import Model.Anwesenheit;
import Model.Lehrer;

public class AnwesenheitDAO {
	
	private LernbueroDAO lernbueroDAO=new LernbueroDAO();
	private SchuelerDAO schuelerDAO=new SchuelerDAO();
	
	public Anwesenheit getAnwesenheit(int id)
	{
		Anwesenheit anwesenheit=null;
		Connection conn=ConnectionProvider.getConnection();
		PreparedStatement statement=null;
		ResultSet rs=null;
		String sql="select * from anwesenheit where anwesenheitid=?";
        try {
			statement = conn.prepareStatement(sql);
			statement.setInt(1, id);
			rs=statement.executeQuery();
			
			if (rs.next())
			{
				anwesenheit=new Anwesenheit();
				anwesenheit.setId(id);
				anwesenheit.setKw(rs.getInt("kw"));
				anwesenheit.setSchuljahr(rs.getInt("aschuljahr"));
				anwesenheit.setSchueler(schuelerDAO.getSchueler(rs.getInt("schuelerID")));
				anwesenheit.setLernbuero(lernbueroDAO.getLernbuero(rs.getInt("lbid")));
				anwesenheit.setWochentag(rs.getInt("wochentag"));
			}
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
		finally {
			try {
				rs.close();
				statement.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return anwesenheit;
	}
	
	public void update(Anwesenheit anwesenheit)
	{
		Connection conn=ConnectionProvider.getConnection();
		String sql="update anwesenheit set aschuljahr=?, kw=?, wochentag=?, schuelerID=?, lbid=? where anwesenheitid=?";
        try {
			PreparedStatement statement = conn.prepareStatement(sql);
			statement.setInt(1, anwesenheit.getSchuljahr());
			statement.setInt(2, anwesenheit.getKw());
			statement.setInt(3, anwesenheit.getWochentag());
			statement.setInt(4, anwesenheit.getSchueler().getId());
			statement.setInt(5, anwesenheit.getLernbuero().getId());
			statement.setInt(6, anwesenheit.getId());

			statement.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
		finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public void anlegen(Anwesenheit anwesenheit)
	{
		Connection conn=ConnectionProvider.getConnection();
		String sql="insert into Anwesenheit VALUES (?, ?, ?, ?, ?, ?)";
        try {
			PreparedStatement statement = conn.prepareStatement(sql);
			statement.setInt(1, anwesenheit.getId());
			statement.setInt(2, anwesenheit.getSchuljahr());
			statement.setInt(3, anwesenheit.getKw());
			statement.setInt(4, anwesenheit.getWochentag());
			statement.setInt(5, anwesenheit.getSchueler().getId());
			statement.setInt(6, anwesenheit.getLernbuero().getId());

			statement.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
		finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void delete(int id)
	{
		Connection conn=ConnectionProvider.getConnection();
		String sql="delete from anwesenheit where anwesenheitid= ?";
        try {
			PreparedStatement statement = conn.prepareStatement(sql);
			statement.setInt(1, id);
			statement.executeUpdate();
        } catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
        finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}
